package com.ruoyi.wb.service.impl;

import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.wb.dto.WbPlanClassifyDto;
import com.ruoyi.wb.mapper.WbPlanContentMapper;
import com.ruoyi.wb.vo.WbPlanClassifyVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.wb.mapper.WbPlanClassifyMapper;
import com.ruoyi.wb.domain.WbPlanClassify;
import com.ruoyi.wb.service.IWbPlanClassifyService;
import org.springframework.util.CollectionUtils;

/**
 * 维保类目列Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-10-14
 */
@Service
public class WbPlanClassifyServiceImpl implements IWbPlanClassifyService 
{
    @Autowired
    private WbPlanClassifyMapper wbPlanClassifyMapper;

    @Autowired
    private WbPlanContentMapper wbPlanContentMapper;

    /**
     * 查询维保类目列
     * 
     * @param id 维保类目列主键
     * @return 维保类目列
     */
    @Override
    public WbPlanClassify selectWbPlanClassifyById(Long id)
    {
        return wbPlanClassifyMapper.selectWbPlanClassifyById(id);
    }

    /**
     * 查询维保类目列列表
     * 
     * @param wbPlanClassify 维保类目列
     * @return 维保类目列
     */
    @Override
    public List<WbPlanClassify> selectWbPlanClassifyList(WbPlanClassify wbPlanClassify)
    {
        return wbPlanClassifyMapper.selectWbPlanClassifyList(wbPlanClassify);
    }

    /**
     * 新增维保类目列
     * 
     * @param wbPlanClassify 维保类目列
     * @return 结果
     */
    @Override
    public int insertWbPlanClassify(WbPlanClassify wbPlanClassify)
    {
        wbPlanClassify.setCreateTime(DateUtils.getNowDate());
        return wbPlanClassifyMapper.insertWbPlanClassify(wbPlanClassify);
    }

    /**
     * 修改维保类目列
     * 
     * @param wbPlanClassify 维保类目列
     * @return 结果
     */
    @Override
    public int updateWbPlanClassify(WbPlanClassify wbPlanClassify)
    {
        wbPlanClassify.setUpdateTime(DateUtils.getNowDate());
        return wbPlanClassifyMapper.updateWbPlanClassify(wbPlanClassify);
    }

    /**
     * 批量删除维保类目列
     * 
     * @param ids 需要删除的维保类目列主键
     * @return 结果
     */
    @Override
    public int deleteWbPlanClassifyByIds(Long[] ids)
    {
        return wbPlanClassifyMapper.deleteWbPlanClassifyByIds(ids);
    }

    /**
     * 删除维保类目列信息
     * 
     * @param id 维保类目列主键
     * @return 结果
     */
    @Override
    public int deleteWbPlanClassifyById(Long id)
    {
        return wbPlanClassifyMapper.deleteWbPlanClassifyById(id);
    }

    /**
     * 查看目录包含目录内容
     * @param dto
     * @return
     */
    @Override
    public List<WbPlanClassifyVo> getCatalogueItemByPlanId(WbPlanClassifyDto dto) {
        return  wbPlanClassifyMapper.getCatalogueItemByPlanId(dto);
    }

    /**
     * 根据维保id删除对应目录信息,同步删除对应的子内容
     * @param planId
     */
    @Override
    public void deleteWbPlanClassifyByPlanId(Long planId) {
        WbPlanClassify classify = new WbPlanClassify();
        classify.setPlanId(planId);
        List<WbPlanClassify> wbPlanClassifies = wbPlanClassifyMapper.selectWbPlanClassifyList(classify);
        wbPlanClassifyMapper.deleteWbPlanClassifyByPlanId(planId);
        if (!CollectionUtils.isEmpty(wbPlanClassifies)) {
            List<Long> idList = wbPlanClassifies.stream().map(WbPlanClassify::getId).collect(Collectors.toList());
            wbPlanContentMapper.deleteWbPlanContentByClassifyId(idList);
        }
    }
}
